/**
 * 
 */
package cn.kuaipai.weibo.api.tencent;

import java.util.ArrayList;
import java.util.List;

import cn.kuaipai.weibo.http.WeiboRequest;
import cn.kuaipai.weibo.model.WeiboParameter;
import cn.kuaipai.weibo.utils.APIURL;

/**
 * 腾讯微博平台支撑--微博相关篇
 * 
 * @author zy
 */
public class TencentTAPI extends WeiboRequest {
	/**
	 * 获取一条微博数据
	 * 
	 * @param openid
	 * @param openkey
	 * @param format
	 * @param id
	 *            微博id
	 * @return
	 */
	public String show(String openid, String openkey, String format, String id) {
		List<WeiboParameter> parameters = new ArrayList<WeiboParameter>();
		parameters.add(new WeiboParameter("format", format));
		parameters.add(new WeiboParameter("id", id));
		return getWeiboResource(APIURL.getTShowURL(), parameters, openid,
				openkey);
	}

	/**
	 * 发表一条微博
	 * 
	 * @param oauth
	 * @param format
	 * @param content
	 *            微博内容
	 * @param clientip
	 *            用户ip（必须正确填写用户侧真实ip，不能为内网ip及以127或255开头的ip，以分析用户所在地）
	 * @param jing
	 *            经度，为实数，如113.421234（最多支持10位有效数字，可以填空）
	 * @param wei
	 *            纬度，为实数，如22.354231（最多支持10位有效数字，可以填空）
	 * @return
	 * @throws Exception
	 */
	public String add(String openid, String openkey, String format,
			String content, String clientip, String jing, String wei) {
		List<WeiboParameter> parameters = new ArrayList<WeiboParameter>();
		parameters.add(new WeiboParameter("format", format));
		parameters.add(new WeiboParameter("content", content));
		parameters.add(new WeiboParameter("clientip", clientip));
		parameters.add(new WeiboParameter("jing", jing));
		parameters.add(new WeiboParameter("wei", wei));
		return weiboPostContent(APIURL.getTAddURL(), parameters, openid,
				openkey);
	}

	/**
	 * 发表一条微博
	 * 
	 * @param oauth
	 * @param format
	 * @param content
	 * @param clientip
	 * @return
	 * @throws Exception
	 */
	public String add(String openid, String openkey, String format,
			String content, String clientip) {
		return add(openid, openkey, format, content, clientip, "", "");
	}

	/**
	 * 删除一条微博
	 * 
	 * @param openid
	 * @param openkey
	 * @param format
	 * @param id
	 * @return
	 */
	public String del(String openid, String openkey, String format, String id) {
		List<WeiboParameter> parameters = new ArrayList<WeiboParameter>();
		parameters.add(new WeiboParameter("format", format));
		parameters.add(new WeiboParameter("id", id));
		return weiboPostContent(APIURL.getTDelURL(), parameters, openid,
				openkey);
	}

	/**
	 * 转播一条微博 post
	 * 
	 * @param openid
	 * @param openkey
	 * @param format
	 * @param content
	 * @param clientip
	 * @param jing
	 * @param wei
	 * @param reid
	 * @return
	 */
	public String reAdd(String openid, String openkey, String format,
			String content, String clientip, String jing, String wei,
			String reid) {
		List<WeiboParameter> parameters = new ArrayList<WeiboParameter>();
		parameters.add(new WeiboParameter("format", format));
		parameters.add(new WeiboParameter("content", content));
		parameters.add(new WeiboParameter("clientip", clientip));
		parameters.add(new WeiboParameter("jing", jing));
		parameters.add(new WeiboParameter("wei", wei));
		parameters.add(new WeiboParameter("reid", reid));
		return weiboPostContent(APIURL.getTReAddURL(), parameters, openid,
				openkey);
	}

	/**
	 * 回复一条微博
	 * 
	 * @param openid
	 * @param openkey
	 * @param format
	 * @param content
	 * @param clientip
	 * @param jing
	 * @param wei
	 * @param reid
	 *            回复的父结点微博id
	 * @return
	 * @throws Exception
	 */
	public String reply(String openid, String openkey, String format,
			String content, String clientip, String jing, String wei,
			String reid) {
		List<WeiboParameter> parameters = new ArrayList<WeiboParameter>();
		parameters.add(new WeiboParameter("format", format));
		parameters.add(new WeiboParameter("content", content));
		parameters.add(new WeiboParameter("clientip", clientip));
		parameters.add(new WeiboParameter("jing", jing));
		parameters.add(new WeiboParameter("wei", wei));
		parameters.add(new WeiboParameter("reid", reid));
		return weiboPostContent(APIURL.getTReplyURL(), parameters, openid,
				openkey);
	}

	/**
	 * 回复一条微博
	 * 
	 * @param openid
	 * @param openkey
	 * @param format
	 * @param content
	 * @param clientip
	 * @param reid
	 * @return
	 */
	public String reply(String openid, String openkey, String format,
			String content, String clientip, String reid) {
		return reply(openid, openkey, format, content, clientip, "", "", reid);
	}

	/**
	 * 发一条带图片的微博 post 提交数据 采用enctype="multipart/form-data"
	 * 
	 * @param openid
	 * @param openkey
	 * @param format
	 * @param content
	 * @param clientip
	 * @param jing
	 * @param wei
	 * @param picpath
	 *            文件域表单名。本字段不要放在签名的参数中，不然请求时会出现签名错误
	 * @return
	 */
	public String addPic(String openid, String openkey, String format,
			String content, String clientip, String jing, String wei,
			String picpath) {
		List<WeiboParameter> parameters = new ArrayList<WeiboParameter>();
		parameters.add(new WeiboParameter("format", format));
		parameters.add(new WeiboParameter("content", content));
		parameters.add(new WeiboParameter("clientip", clientip));
		parameters.add(new WeiboParameter("jing", jing));
		parameters.add(new WeiboParameter("wei", wei));
		List<WeiboParameter> pic = new ArrayList<WeiboParameter>();
		pic.add(new WeiboParameter("pic", picpath));
		return weiboPostContentFile(APIURL.getTAddPicURL(), parameters, pic,
				openid, openkey);
	}

	/**
	 * 发一条带图片的微博
	 * 
	 * @param openid
	 * @param openkey
	 * @param format
	 * @param content
	 * @param clientip
	 * @param picpath
	 * @return
	 */
	public String addPic(String openid, String openkey, String format,
			String content, String clientip, String picpath) {
		return addPic(openid, openkey, format, content, clientip, picpath);
	}
}
